傻瓜攻略(十七)

您所在的位置:网站首页 matlab stats函数 傻瓜攻略(十七)

傻瓜攻略(十七)

2023-10-28 19:59| 来源: 网络整理| 查看: 265

以下内容基于MATLAB官网的介绍文档,进行了一点个人的理解和整理,不算原创,但也不是单纯的翻译。具体内容缺斤少两的,想看具体的英文内容请点击链接fitcsvm。

MATLAB实现SVM二分类之fitcsvm fitcsvm几个例子Train SVM ClassifierTrain and Cross-Validate SVM ClassifierDetect Outliers Using SVM and One-Class LearningFind Multiple Class Boundaries Using Binary SVMOptimize SVM Classifier 输入参数Input Arguments输出参数Output Arguments更多

fitcsvm

fitcsvm训练或交叉验证支持向量机(SVM)模型在低维或中维预测数据集上的一类和二类(binary)分类。fitcsvm支持使用核函数映射预测数据,并支持通过二次规划实现目标函数最小化的顺序最小优化(SMO,sequential minimal optimization)、迭代单数据算法(ISDA,iterative single data algorithm)或L1软边界最小化。

几个例子 Train SVM Classifier

训练简单的二分类SVM,使用的是二维坐标数据X,可以通过坐标图可视化分类效果。

% 导入数据,加载Fisher的虹膜数据集。去除萼片的长度和宽度以及所有观察到的刚毛鸢尾。 load fisheriris inds = ~strcmp(species,'setosa'); X = meas(inds,3:4); y = species(inds); % 利用处理后的数据集训练支持向量机分类器。 SVMModel = fitcsvm(X,y) % SVMModel是一个经过训练的ClassificationSVM分类器。显示SVMModel的属性,可以使用点表示法如下。 classOrder = SVMModel.ClassNames % 绘制数据的散点图并圈出支持向量。支持向量是发生在估计类边界上或超出其估计类边界的观察值。 sv = SVMModel.SupportVectors; figure gscatter(X(:,1),X(:,2),y) hold on plot(sv(:,1),sv(:,2),'ko','MarkerSize',10) legend('versicolor','virginica','Support Vector') hold off Train and Cross-Validate SVM Classifier

训练和交叉验证SVM分类器,X为351个34维的样本。使用RBF径向基核训练SVM分类器。

% Load the ionosphere data set.加载数据集。 load ionosphere rng(1); % For reproducibility % 使用RBF径向基核训练SVM分类器。 % 让程序找到内核函数的比例值。标准化预测变量。SVMModel是一个经过训练的ClassificationSVM分类器。 SVMModel = fitcsvm(X,Y,'Standardize',true,'KernelFunction','RBF',... 'KernelScale','auto'); % 对SVM分类器进行交叉验证。 默认情况下,该软件使用10倍交叉验证。CVSVMModel是一个ClassificationPartitionedModel交叉验证的分类器。 CVSVMModel = crossval(SVMModel); % 计算样本外分类错误率和准确率。 classLoss = kfoldLoss(CVSVMModel); disp('验证准确率:') acc = (1-classLoss)*100 Detect Outliers Using SVM and One-Class Learning

通过将所有的虹膜分配给同一个类来修改Fisher的虹膜数据集。在修改后的数据集中检测异常值,并确定异常值所占的预期比例。 但是我没看,嘿嘿

Find Multiple Class Boundaries Using Binary SVM

创建fisherris数据集的散点图。将绘图中网格的坐标视为来自数据集分布的新观测值,并通过将坐标分配给数据集中的三个类之一来查找类边界。

Optimize SVM Classifier

使用fitcsvm自动优化超参数。通过使用自动超参数优化,找到使交叉验证损失减少五倍的超参数。为了获得可重现性,设置随机种子random seed并使用“expected-improvement-plus”获取功能。

在实际应用中,可以考虑先找到合适的超参数,再进行具体的应用。

load ionosphere rng default Mdl = fitcsvm(X,Y,'OptimizeHyperparameters','auto',... 'HyperparameterOptimizationOptions',struct('AcquisitionFunctionName',... 'expected-improvement-plus')) 输入参数Input Arguments

必须的输入参数主要有输入样本X,输入标签Y,这俩是最重要的,数据搞不好,效果就难保。

其它的就是一些网络训练的设置,包括交叉验证、优化算法、核函数等等,还是挺多的,一般来说涉及到SVM的具体应用,就应该考虑研究这些参数了。这里就不多做介绍了,以后有缘使用的话再研究研究。

输出参数Output Arguments

fitcsvm函数的输出就是经过训练的SVM分类模型,包括分类SVM模型(ClassificationSVM)和经过交叉验证的SVM分类模型(ClassificationPartitionedModel)两种。想调用输出模型的属性,使用点表示法。例如,输入‘m.Alpha’在命令窗口中显示模型m的拉格朗日乘数。

更多

此外,More About、Tips、Algorithms等模块也有很多的内容可以学习。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3